package com.liuyu.common.framework.client.model.order;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @ClassName: OpenOrderDTO
 * @Description: OpenOrderDTO对象.对应实体描述：订单
 * @Author: liuyu
 * @Date: 2022-05-09 14:21:16
 * @Version: 1
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(description = "OpenOrderDTO对象")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class OpenOrderDTO implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 对应字段：order_no,备注：订单号
     */
    @Schema(description = "订单号")
    private String orderNo;
    /**
     * 对应字段：corp_id,备注：合作方id
     */
    @Schema(description = "合作方id")
    private Integer corpId;
    /**
     * 对应字段：corp_com_code,备注：合作方出单机构代码:主要做总分销模式的权限管控和业务划分
     */
    @Schema(description = "合作方出单机构代码:主要做总分销模式的权限管控和业务划分")
    private String corpComCode;
    /**
     * 对应字段：insurance_corp_id,备注：保司id
     */
    @Schema(description = "保司id")
    private Integer insuranceCorpId;
    /**
     * 对应字段：com_code,备注：保司出单机构代码：保司的权限管控和业务划分
     */
    @Schema(description = "保司出单机构代码：保司的权限管控和业务划分")
    private String comCode;
    /**
     * 对应字段：api_id,备注：接口id
     */
    @Schema(description = "接口id")
    private String apiId;
    /**
     * 对应字段：multiple_order_no,备注：复合订单号：批量出单时才有
     */
    @Schema(description = "复合订单号：批量出单时才有")
    private String multipleOrderNo;
    /**
     * 对应字段：insure_type,备注：出单类型：0同步投保，1异步投保，2延迟投保，3人工投保，4等待人工投保，5等待API投保
     */
    @Schema(description = "出单类型：0同步投保，1异步投保，2延迟投保，3人工投保，4等待人工投保，5等待API投保")
    private Integer insureType;
    /**
     * 对应字段：group_project_code,备注：group_project_code[新增]
     */
    @Schema(description = "group_project_code[新增]")
    private String groupProjectCode;
    /**
     * 对应字段：project_code,备注：project_code[新增]
     */
    @Schema(description = "project_code[新增]")
    private String projectCode;
    /**
     * 对应字段：product_code,备注：产品代码
     */
    @Schema(description = "产品代码")
    private String productCode;
    /**
     * 对应字段：product_case_code,备注：产品方案代码
     */
    @Schema(description = "产品方案代码")
    private String productCaseCode;
    /**
     * 对应字段：start_date,备注：起保日期
     */
    @Schema(description = "起保日期")
    private LocalDateTime startDate;
    /**
     * 对应字段：start_hour,备注：起保时间
     */
    @Schema(description = "起保时间")
    private Integer startHour;
    /**
     * 对应字段：end_date,备注：终保日期
     */
    @Schema(description = "终保日期")
    private LocalDateTime endDate;
    /**
     * 对应字段：end_hour,备注：终保时间
     */
    @Schema(description = "终保时间")
    private Integer endHour;
    /**
     * 对应字段：insure_count,备注：投保份数:默认1
     */
    @Schema(description = "投保份数:默认1")
    private Integer insureCount;
    /**
     * 对应字段：insure_year,备注：投保年数
     */
    @Schema(description = "投保年数")
    private Integer insureYear;
    /**
     * 对应字段：insure_month,备注：投保月数
     */
    @Schema(description = "投保月数")
    private Integer insureMonth;
    /**
     * 对应字段：insure_day,备注：投保天数
     */
    @Schema(description = "投保天数")
    private Integer insureDay;
    /**
     * 对应字段：sum_amount,备注：保额
     */
    @Schema(description = "保额")
    private BigDecimal sumAmount;
    /**
     * 对应字段：sum_premium,备注：保费
     */
    @Schema(description = "保费")
    private BigDecimal sumPremium;
    /**
     * 对应字段：pay_premium,备注：应付保费
     */
    @Schema(description = "应付保费")
    private BigDecimal payPremium;
    /**
     * 对应字段：pay_type,备注：支付方式：0未支付，1微信，2支付宝，3转账，4保司在线收款，5保司转账收款
     */
    @Schema(description = "支付方式：0未支付，1微信，2支付宝，3转账，4保司在线收款，5保司转账收款")
    private Integer payType;
    /**
     * 对应字段：pay_status,备注：支付方式：0未支付，1已经直付
     */
    @Schema(description = "支付方式：0未支付，1已经直付")
    private Integer payStatus;

    /**
     * 对应字段：pay_url,备注：支付
     */
    @Schema(description = "pay_url")
    private String payUrl;
    /**
     * 对应字段：pay_url2,备注：支付连接2
     */
    @Schema(description = "pay_url2")
    private String payUrl2;
    /**
     * 对应字段：source_type,备注：订单来源：0PC订单，1app订单，2客户
     */
    @Schema(description = "订单来源：0PC订单，1app订单，2客户")
    private Integer sourceType;
    /**
     * 对应字段：status,备注：状态：0待支付，1.待出单，2提交保司，3完成，4已关闭，5无效订单
     */
    @Schema(description = "状态：0待支付，1.待出单，2提交保司，3完成，4已关闭，5无效订单")
    private Integer status;
    /**
     * 对应字段：policy_no,备注：保单号
     */
    @Schema(description = "保单号")
    private String policyNo;
    /**
     * 对应字段：proposal_no,备注：投保单号
     */
    @Schema(description = "投保单号")
    private String proposalNo;

    /**
     * 对应字段：sale_com_code,备注：销售渠道代码;分销
     */
    @Schema(description = "销售渠道代码;分销")
    private String saleComCode;
    /**
     * 对应字段：seller_code,备注：销售人员;分销
     */
    @Schema(description = "销售人员;分销")
    private String sellerCode;
    /**
     * 对应字段：remark,备注：备注
     */
    @Schema(description = "备注")
    private String remark;
    /**
     * 对应字段：valid_status,备注：有效标志位：0：无效1：有效
     */
    @Schema(description = "有效标志位：0：无效1：有效")
    private String validStatus;

    /**
     * 对应字段：under_write_flag,备注：审核通过标志位：0：初始化：审核通过2：待审核3：注销5：审核不通过
     */
    @Schema(description = "审核通过标志位：0：初始化：审核通过2：待审核3：注销5：审核不通过")
    private String underWriteFlag;

    @Schema(description = "人员清单")
    private List<OpenOrderPersonDTO> persons;

    @Schema(description = "扩展信息")
    private OpenOrderExtendDTO orderExtendDTO;
}
